جزوه · فصل دوم · جلسه ۲۳ · مدیریت بسته‌ها با apt و dpkg ← بازگشت به فهرست
📘 فصل دوم · جلسه ۲۳ مدیریت بسته‌ها با apt و dpkg
📅 تاریخ: سه‌شنبه، ۲۰ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی)

▍ مقدمه

در لینوکس (مخصوصاً خانواده دبیان)، دو روش اصلی برای نصب و مدیریت بسته‌ها وجود دارد:

🔑 تفاوت اصلی:

apt یک مدیر بسته سطح بالا است که وابستگی‌ها (Dependencies) را به‌طور خودکار مدیریت می‌کند. اما dpkg یک ابزار سطح پایین است که مستقیماً با فایل‌های .deb کار می‌کند و وابستگی‌ها را خودکار حل نمی‌کند.

▍ نصب از طریق مخازن با apt

apt مخفف Advanced Package Tool است و اصلی‌ترین ابزار مدیریت بسته در دبیان و کالی است.

• دستورات اصلی apt

دستور توضیح
sudo apt update به‌روزرسانی لیست بسته‌های مخزن (بدون نصب)
sudo apt upgrade ارتقاء همه بسته‌های نصب‌شده به آخرین نسخه
sudo apt install [package] نصب یک بسته جدید
sudo apt remove [package] حذف یک بسته (فایل‌های کانفیگ باقی می‌مانند)
sudo apt purge [package] حذف کامل بسته به همراه فایل‌های کانفیگ
sudo apt autoremove حذف بسته‌های غیرضروری که دیگر نیاز نیستند
apt search [keyword] جستجوی بسته در مخازن
apt show [package] نمایش اطلاعات کامل یک بسته
sudo apt dist-upgrade ارتقاء هوشمند با مدیریت وابستگی‌ها

• مثال عملی

┌──(ya3in㉿kali)-[~] └─$ sudo apt update Get:1 http://kali.download/kali kali-rolling InRelease [30.5 kB]
Get:2 http://kali.download/kali kali-rolling/main amd64 Packages [16.2 MB]
...
└─$ sudo apt install htop Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
htop
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 76.5 kB of archives.
After this operation, 226 kB of additional disk space will be used.
Get:1 http://kali.download/kali kali-rolling/main amd64 htop amd64 3.2.2-1 [76.5 kB]
...

توضیح: ابتدا لیست بسته‌ها به‌روز شد، سپس htop نصب شد.

⚠️ نکته مهم:

دستورات apt update و apt upgrade حتماً باید با sudo (دسترسی روت) اجرا شوند، زیرا تغییرات در سطح سیستم اعمال می‌شوند.

▍ نصب بدون مخازن با dpkg

dpkg ابزار اصلی برای کار با فایل‌های .deb است. این روش وقتی استفاده می‌شود که بسته مورد نظر در مخزن وجود ندارد یا می‌خواهید یک فایل .deb را به‌صورت آفلاین نصب کنید.

• دستورات اصلی dpkg

گزینه (Short) گزینه (Long) توضیح
-i --install نصب یک بسته .deb
-r --remove حذف بسته (فایل‌های کانفیگ باقی می‌مانند)
-P --purge حذف کامل بسته همراه با فایل‌های کانفیگ
-l --list لیست بسته‌های نصب‌شده
-L --listfiles نمایش فایل‌های نصب‌شده توسط یک بسته
-S --search پیدا کردن بسته‌ای که یک فایل خاص را نصب کرده
-s --status نمایش وضعیت یک بسته
-p --print-avail نمایش اطلاعات یک بسته نصب‌شده
-I --info نمایش اطلاعات یک فایل .deb (نصب‌نشده)
-c --contents نمایش محتویات یک فایل .deb
-C --audit بررسی بسته‌های ناقص نصب‌شده
N/A --get-selections نمایش لیست بسته‌های نصب‌شده
N/A --configure پیکربندی مجدد یک بسته نصب‌شده

• مثال عملی

┌──(ya3in㉿kali)-[~] └─$ sudo dpkg -i package.deb (Reading database ... 123456 files and directories currently installed.)
Preparing to unpack package.deb ...
Unpacking package (1.0.0) ...
Setting up package (1.0.0) ...
Processing triggers for man-db (2.10.2-1) ...
└─$ sudo dpkg -r package (Reading database ... 123456 files and directories currently installed.)
Removing package (1.0.0) ...
Processing triggers for man-db (2.10.2-1) ...
└─$ dpkg -l | grep htop ii htop 3.2.2-1 amd64 interactive process viewer

توضیح: نصب، حذف و مشاهده وضعیت یک بسته با dpkg.

• کاربردهای خاص dpkg

┌──(ya3in㉿kali)-[~] └─$ dpkg -L htop /.
/usr
/usr/bin
/usr/bin/htop
/usr/share
/usr/share/doc
/usr/share/doc/htop
/usr/share/doc/htop/changelog.Debian.gz
/usr/share/doc/htop/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/htop.1.gz

توضیح: نمایش همه فایل‌های نصب‌شده توسط بسته htop.

┌──(ya3in㉿kali)-[~] └─$ dpkg -S /usr/bin/htop htop: /usr/bin/htop

توضیح: پیدا کردن بسته‌ای که فایل /usr/bin/htop را نصب کرده است.

▍ تفاوت apt و dpkg

ویژگی apt dpkg
سطح سطح بالا (High-level) سطح پایین (Low-level)
مدیریت وابستگی‌ها ✅ خودکار ❌ دستی (مشکل‌دار)
نیاز به مخزن ✅ بله ❌ خیر (فایل .deb کافی است)
نصب آفلاین ❌ خیر ✅ بله
حل وابستگی‌ها ✅ خودکار ❌ باید جداگانه نصب شوند
جستجو در مخزن ✅ بله (apt search) ❌ خیر
مشاهده فایل‌های بسته ❌ خیر ✅ بله (dpkg -L)

▍ به‌روزرسانی و ارتقاء سیستم

برای به‌روز نگه‌داشتن سیستم، همیشه از این دستورات استفاده کنید:

┌──(ya3in㉿kali)-[~] └─$ sudo apt update └─$ sudo apt upgrade └─$ sudo apt dist-upgrade

توضیح: update لیست بسته‌ها را به‌روز می‌کند، upgrade بسته‌های موجود را ارتقاء می‌دهد، dist-upgrade ارتقاء هوشمند با مدیریت وابستگی‌ها انجام می‌دهد.

⚠️ نکته امنیتی:

همیشه قبل از upgrade، ابتدا update را اجرا کنید تا لیست بسته‌ها به‌روز شود. همچنین این دستورات حتماً با sudo اجرا شوند.

▍ tmate: ترمینال اشتراک‌گذاری شده

tmate یک ابزار فوق‌العاده برای اشتراک‌گذاری ترمینال است. با استفاده از tmate، می‌توانید ترمینال خود را با دیگران به اشتراک بگذارید و آنها به‌صورت زنده ببینند که شما چه کاری انجام می‌دهید.

🔗 نحوه استفاده از tmate:
┌──(ya3in㉿kali)-[~] └─$ sudo apt install tmate └─$ tmate [tmate] Connecting to ssh.tmate.io...
[tmate] ⚡ Session: https://tmate.io/t/xxxxxxxxxxxxxxxxxxx
[tmate] 🔗 SSH: ssh xxxxxxxxxxxxxxxxxxx@tmate.io

توضیح: با اجرای tmate، یک لینک دریافت می‌کنید که با اشتراک‌گذاری آن، دیگران می‌توانند ترمینال شما را ببینند و حتی با شما تایپ کنند.

✅ تمرین پیشنهادی:
  • با sudo apt update لیست بسته‌ها را به‌روز کنید.
  • با sudo apt install neofetch یک بسته جدید نصب کنید.
  • با dpkg -L neofetch فایل‌های نصب‌شده را ببینید.
  • با sudo apt remove neofetch بسته را حذف کنید.
  • با sudo apt purge neofetch بسته را به‌طور کامل پاک کنید.